﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LASMobile.Classes;
using LASMobile.LASDBClasses;

namespace LASMobile
{
    public partial class Default : System.Web.UI.Page
    {
        private readonly LASDBDataContext _db = new LASDBDataContext();
        private List<Empresa> _empresas =  new List<Empresa>();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            _empresas = GetCompanyNames();

            if (IsPostBack) return;

            CompanyDropDownList.DataSource = _empresas.Select(empresa => empresa.NombreEmpresa);
            CompanyDropDownList.DataBind();
        }

        protected void LoginButtonClick(object sender, EventArgs e)
        {
            if (CompanyDropDownList.SelectedIndex < 0) return;
            
            var sociedad = _empresas[CompanyDropDownList.SelectedIndex].IdEmpresa;
            var password = PasswordTextBox.Text;
            var usuario = UsuarioTextBox.Text;
            var md5 = MD5Core.GetHashString(usuario + password + sociedad);
            var result = (from user in _db.Usuarios
                         where user.Checksum == md5
                         select user).ToList();

            if (result.Count == 0) return;

            Session[Constants.SESSION_USER] = result[0];

            Response.Redirect("Menu.aspx", true);
        }

        #region Métodos LINQ-TO-SQL
        /// <summary>
        /// Metodo que permite obtener la lista de las compañias
        /// </summary>
        /// <returns></returns>
        private List<Empresa> GetCompanyNames()
        {
            List<Empresa> lista = null;

            try
            {
                var resultado = from empresa in _db.Empresas
                                select empresa;
                lista = resultado.ToList();
            }
            catch
            {
                //TODO: Error al recuperar los articulos
            }

            return lista;
        }
        #endregion
    }
}